-- *****************************************************************************
-- *                                                    *     _       _        *
-- *  AdaDecoupe                                        *    / \   __| | __ _  *
-- *  http://code.google.com/p/adadecoupe/              *   / _ \ / _` |/ _` | *
-- *  Radim Badsi & Célia Biguzzi - IG3                 *  / ___ \ (_| | (_| | *
-- *  Polytech'Montpellier                              * /_/   \_\__,_|\__,_| *
-- *                                                    *                      *
-- *****************************************************************************
-- *                                                                           *
-- * statistiques.ads  -  Statistiques                                         *
-- * Calcule certains paramètres de la planification.                          *
-- *                                                                           *
-- *****************************************************************************

with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Util; use Util; with Ansi; use Ansi;
with Categories; with Liste_Categories;

package Statistiques is

	type Stat is private;

	procedure Init (S : out Stat);
	procedure Incr_Commandes_Satisfaites (S : in out Stat; Cat : in Categories.Categorie);
	procedure Incr_Commandes_Attente (S : in out Stat; Cat : in Categories.Categorie);
	procedure Incr_Commandes_Erronees (S: in out Stat);
	
	function Nb_Commandes (S : Stat) return Natural;
	function Nb_Commandes_Satisfaites (S : Stat) return Natural;
	function Nb_Commandes_Attente (S : Stat) return Natural;
	function Nb_Commandes_Erronees (S : Stat) return Natural;
	
	function Qu_Commandes_Erronees (S : Stat) return Natural;
	function Qu_Commandes_Non_Satisfaites (S : Stat) return Natural;
	function Qu_Commandes_Non_Satisfaites (S : Stat; Verre : Categorie_Verre) return Natural;
	
	function ToString(S : Stat) return String;
private
	
	type Nb_Commandes_Par_Categorie is array(Categorie_Verre) of Natural;
	
	type Stat is
	record
		Nb_Commandes_Satisfaites : Nb_Commandes_Par_Categorie;
		Nb_Commandes_Attente : Nb_Commandes_Par_Categorie;
		Nb_Commandes_Erronees : Natural;
	end record;
	
	procedure Incr (N : in out Natural);
	pragma inline(Incr);
		
	function Somme (A : Nb_Commandes_Par_Categorie) return Natural;

end Statistiques;


		